home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 September / Macworld (1998-09).dmg / Shareware World / Info / For Developers / MacZoop 1.8.3 / Required Classes / Z Headers / ZDefines.h < prev    next >
Text File  |  1998-07-10  |  5KB  |  181 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop - "the framework for the rest of us"         
  5. *
  6. *
  7. *
  8. *            ZDefines.h            -- some handy constants, etc
  9. *
  10. *
  11. *
  12. *
  13. *
  14. *            © 1996, Graham Cox
  15. *
  16. *
  17. *
  18. *
  19. *************************************************************************************************/
  20.  
  21. #pragma once
  22.  
  23. #ifndef __ZDEFINES__
  24. #define __ZDEFINES__
  25.  
  26. // standard basic resource IDs, etc.
  27.  
  28. #define        kSleepTime            10        // number of ticks to give up to background programs
  29. #define        kUntitledWindowID    128        // resource ID of the main window template
  30. #define        kAppleMenuID        128        // ID of the apple menu
  31. #define        kFileMenuID            129        // ID of File menu
  32. #define        kEditMenuID            130        // ID of Edit menu
  33.  
  34. #define        kShowAboutBox        1
  35. #define        kAboutBoxID            128
  36.  
  37. #define        kStdMenubarID        128        // ID of the default MBAR resource for the main menu bar
  38. #define        kMiscStrListID        128
  39. #define        kExceptionAlertID    130
  40. #define        kMemoryLowAlertID    132
  41. #define        kAssertionAlertID    138
  42.  
  43. // save changes alert constants
  44.  
  45. #define        kConfirmSaveAlertID    129
  46.  
  47. enum
  48. {
  49.     kConfirmSave = 1,
  50.     kCloseNoSave,
  51.     kCloseCancel
  52. };
  53.  
  54. // macros for extracting window/dialog objects from mac windows
  55.  
  56. #define        IS_ZWINDOW_KIND        772    // in the 'kind' field of the window record
  57.  
  58. #define        GetZWindow(w)        ((((WindowPeek) w)->windowKind == IS_ZWINDOW_KIND) || \
  59.                                  (((WindowPeek) w)->windowKind == dialogKind))? \
  60.                                     (ZWindow*) GetWRefCon(w) : NULL
  61.  
  62. #define        kStdScrollbarWidth        15
  63.  
  64.  
  65. // handy object disposal macros                                    
  66.  
  67. #define        ForgetObject(p)        { delete (p); (p) = NULL; }
  68. #define        ForgetThis()        { delete this; }
  69.  
  70. // common useful macros
  71.  
  72. #define        MIN( a, b )        ((a) < (b))? (a) : (b)
  73. #define        MAX( a, b )        ((a) > (b))? (a) : (b)
  74. #define        ABS( x )        (((x) < 0 )?  -(x) : (x))
  75. #define        CMP( a, b )        ((a) < (b))? -1 : (((a) > (b))? 1 : 0 )
  76. #define        SGN( a )        (((a) < 0 )? -1 : 1 )
  77.  
  78. #define        CLITERAL( x )    #x
  79. #define        PLITERAL( x )    CLITERAL( \p##x )
  80.  
  81. // can be passed tp SetCursorShape() to set cursor to qd.arrow:
  82.  
  83. #define        ARROW_CURSOR        0
  84. #define        WIN_ARROW_CURSOR    199
  85.  
  86. // common non-ascii keys
  87.  
  88. #define        TAB_KEY                0x09
  89. #define        RETURN_KEY            0x0D
  90. #define        ENTER_KEY            0x03
  91. #define        ESCAPE_KEY            0x1B
  92. #define        UP_ARROW_KEY        0x1E
  93. #define        DOWN_ARROW_KEY        0x1F
  94. #define        LEFT_ARROW_KEY        0x1C
  95. #define        RIGHT_ARROW_KEY        0x1D
  96. #define        BACKSPACE_KEY        0x08
  97.  
  98. // undefined and quiet exceptions
  99.  
  100. #define        kUnknownExceptionErr    999
  101. #define        kSilentErr                -1
  102. #define        kMacZoopParamErr        950
  103. #define        kMacZoopParamErr1        951
  104. #define        kMacZoopNULLPtrErr        952
  105.  
  106. #define        kUnknownSignature        '????'
  107.  
  108. // current MacZoop version number:
  109.  
  110. #define        MACZOOP_VERSION        0x0183
  111.  
  112. // global structure provides some common gestalt results
  113.  
  114. typedef struct
  115. {
  116.     Boolean        supportsColour;                // colour quickdraw available
  117.     Boolean        hasDragManager;                // drag manager available
  118.     Boolean        hasFPU;                        // has a floating-point coprocessor
  119.     Boolean        hasAppleEvents;                // has apple events
  120.     Boolean        hasAppearanceMgr;            // has the appearance manager
  121.     Boolean        hasQuickTime;                // has QuickTime available
  122.     Boolean        hasImgCompressionMgr;        // the Image Compression Manager is available
  123.     Boolean        hasNavigationServices;        // Nav Services installed & available
  124.     short        systemVersion;                // current system version number
  125. }
  126. tMacInfo;
  127.  
  128. // handy basic pascal string utilities
  129.  
  130. void    CopyPString( ConstStr255Param srcString, Str255 destString );
  131. void    ConcatPStrings( Str255 root, ConstStr255Param append );
  132. void    CopyPStringTrunc( ConstStr255Param srcString, Str255 destString, unsigned char ccLim );
  133. void    ConcatPStringsTrunc( Str255 root, ConstStr255Param append, unsigned char ccLim );
  134.  
  135. // static functions for setting up the global zoom FX source rect:
  136.  
  137. void    SetGlobalZoomSource( Rect* aGlobalRect );
  138. void    SetLocalZoomSource( Rect* aLocalRect );
  139.  
  140. // standard function to determine if a GrafPort is colour or b/w
  141.  
  142. Boolean    IsColourPort( GrafPtr aPort );
  143.  
  144. // utility function to set hilite mode for invert ops
  145.  
  146. void    SetHiliteMode();
  147.  
  148. // check for drag manager including linkage check:
  149.  
  150. Boolean    MacHasDM();
  151.  
  152. // Alert posting function that will handle notification if app suspended, Use wherever you would
  153. // otherwise use Alert. Default flags give typical behaviour, you can pass others to modify
  154. // behaviour.
  155.  
  156. typedef enum
  157. {
  158.     ntMinimalAlert = 0,
  159.     ntAlertPlaySound = 1,
  160.     ntAlertDisplayMessage = 2,
  161.     ntAlertDefault = 3
  162. }
  163. NTAlertFlags;
  164.  
  165. // note that NotifyAlert assumes:
  166.  
  167. #define        kApplicationIconSuiteID        128
  168. #define        kNotificationSoundID        128
  169.  
  170. // posting function- use it instead of Alert():
  171.  
  172. short    NotifyAlert( const short alertID, NTAlertFlags flags = ntAlertDefault );
  173.  
  174. // simple delay function (try to avoid delays since they waste time!).
  175. // MZWait will handle events while counting off the ticks, so can be more cooperative than
  176. // MZDelay though less accurate due to event latency.
  177.  
  178. void    MZDelay( short ticks );
  179. void    MZWait( unsigned short ticks );
  180.  
  181. #endif